知识点名称:光度计的实例 编号: K12-5 前驱知识点编号:K12-1,K12-2 作者: 讲义内容:

从光度计获取的数据只有一个,就是光线强度,下面是实例的完成步骤。 首先创建工程LightSensorTest,修改活动的布局代码activity_main.xml,如下所示: ```

<TextView
    android:id="@+id/light_level"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:textSize="20sp" />

</RelativeLayout>```

在这个布局中,使用了一个TextView来显示当前的光照强度,并让它在布局中居中显示。 接着修改MainActivity中的代码如下所示:

```public class MainActivity extends Activity {

private SensorManager sensorManager;    
private TextView lightLevel;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    lightLevel = (TextView) findViewById(R.id.light_level);
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
    sensorManager.registerListener(listener, sensor, 
                   SensorManager.SENSOR_DELAY_NORMAL);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    if (sensorManager != null) {
        sensorManager.unregisterListener(listener);
    }
}

private SensorEventListener listener = new SensorEventListener() {

    @Override
    public void onSensorChanged(SensorEvent event) {
        // values数组中第一个下标的值就是当前的光照强度
        float value = event.values[0];
        lightLevel.setText("Current light level is " + value + " lx");
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }

};

}

然后运行程序,你将会在手机上看到当前环境下的光照强度,根据所处环境不同,显示的关照强度可能是几十到几百勒克斯。如果是强光照射手机,有可能达到上千勒克斯的光照强度,如图12.2所示。

图12.2 光度计的实例运行效果图

results matching ""

    No results matching ""